/*
 * @Author: geek
 * @LastEditors: geek
 * @Description: 【俄罗斯方块配置文件】
 * @Src: https://geek.qq.com/tetris/js/tetris.config.js (编译前的源文件)
 */
((global) => {
    const config = {
      // 格子宽高及单位配置
      gridConfig: {
        width: 200,
        height: 400,
        row: 20,
        col: 10,
      },
  
      // 方块的颜色，可设置为不同颜色，当前设置为统一色
      colors: ['#00b050', '#00b050', '#00b050', '#00b050'],
  
      // 7 种类型方块（I,L,J,T,O,S,Z）的形态及每种类型对应的 4 个形态
      // 注：游戏使用的坐标系为 canvas 坐标系（坐标原点在左上角）详见：https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial/Drawing_shapes
      shapes: [
        [
          // I 型
          [
            [0, 0],
            [0, -1],
            [0, -2],
            [0, 1],
          ],
          [
            [0, 0],
            [1, 0],
            [2, 0],
            [-1, 0],
          ],
          [
            [0, 0],
            [0, -1],
            [0, -2],
            [0, 1],
          ],
          [
            [0, 0],
            [1, 0],
            [2, 0],
            [-1, 0],
          ],
        ],
        [
          // L 型
          [
            [0, 0],
            [0, -1],
            [0, -2],
            [1, 0],
          ],
          [
            [0, 0],
            [1, 0],
            [2, 0],
            [0, 1],
          ],
          [
            [0, 0],
            [-1, 0],
            [0, 1],
            [0, 2],
          ],
          [
            [0, 0],
            [0, -1],
            [-1, 0],
            [-2, 0],
          ],
        ],
        [
          // J 型
          [
            [0, 0],
            [0, -1],
            [0, -2],
            [-1, 0],
          ],
          [
            [0, 0],
            [0, -1],
            [1, 0],
            [2, 0],
          ],
          [
            [0, 0],
            [1, 0],
            [0, 1],
            [0, 2],
          ],
          [
            [0, 0],
            [-1, 0],
            [-2, 0],
            [0, 1],
          ],
        ],
        [
          // T 型
          [
            [0, 0],
            [1, 0],
            [0, 1],
            [-1, 0],
          ],
          [
            [0, 0],
            [0, -1],
            [0, 1],
            [-1, 0],
          ],
          [
            [0, 0],
            [0, -1],
            [1, 0],
            [-1, 0],
          ],
          [
            [0, 0],
            [0, -1],
            [1, 0],
            [0, 1],
          ],
        ],
        [
          // O 型
          [
            [0, 0],
            [0, -1],
            [1, -1],
            [1, 0],
          ],
          [
            [0, 0],
            [0, -1],
            [1, -1],
            [1, 0],
          ],
          [
            [0, 0],
            [0, -1],
            [1, -1],
            [1, 0],
          ],
          [
            [0, 0],
            [0, -1],
            [1, -1],
            [1, 0],
          ],
        ],
        [
          // S 型
          [
            [0, 0],
            [0, -1],
            [1, -1],
            [-1, 0],
          ],
          [
            [0, 0],
            [-1, 0],
            [-1, -1],
            [0, 1],
          ],
          [
            [0, 0],
            [0, -1],
            [1, -1],
            [-1, 0],
          ],
          [
            [0, 0],
            [-1, 0],
            [-1, -1],
            [0, 1],
          ],
        ],
        [
          // Z 型
          [
            [0, 0],
            [0, -1],
            [1, 0],
            [-1, -1],
          ],
          [
            [0, 0],
            [0, -1],
            [-1, 1],
            [-1, 0],
          ],
          [
            [0, 0],
            [0, -1],
            [1, 0],
            [-1, -1],
          ],
          [
            [0, 0],
            [0, -1],
            [-1, 1],
            [-1, 0],
          ],
        ],
      ],
  
      // 操作动作到提交类型的映射
      actionMap: {
        down: 'D', // 下降
        left: 'L', // 左移
        right: 'R', // 右移
        rotate: 'C', // 旋转
        new: 'N', // 新方块
      },
  
      // 操作动作到提交类型的反向映射
      actionMapReversed: {
        D: 'down',
        L: 'left',
        R: 'right',
        C: 'rotate',
        N: 'new',
      },
    };
  
    global.config = config;
  })(window);